route.loader (tanstack)
(レンダリング時ではなく) routeがマッチした時点でデータを取得し始められる
コンテンツを速く表示できるようになる
仮にこの処理がめちゃくちゃ遅いと、クリックしてから遷移するまでに待たせる感じになる
クリックして反応ないな?という感じの体験になる
createFileRouteなどで指定するこいつのこと
code:ts
export const Route = createFileRoute('/posts')({
loader: () => fetchPosts(), // ←こいつ
})
ここで取得したデータには、Route.useLoaderDataでアクセスできる
docs
loader が返した値は 自動的にキャッシュされる
Suspense と統合され、描画はデータ準備後
stale-while-revalidateを使える
データが既にあれば、それを使用する
staleTimeやgcTimeなどのオプションもある
引数
params:path params
deps:loaderDeps の結果
context:router / route context
abortController:キャンセル制御
preload:プリロード中かどうか
cause:enter / stay / preload